$(function($) {
	window.fbAsyncInit = function() {
		FB.init({
			appId : '299999716845708',
			xfbml : true,
			status : true,
			version : 'v2.1'
		});
		FB.Event.subscribe('edge.create', like_callback);
		FB.Event.subscribe('comment.create', add_comment_callback);
		// onlye check login status when uploader session is null
		if($.trim($('#uploader-session').html()) == ""){
			if($.cookie("autoLogin") == null || $.cookie("autoLogin") == true){
				FB.getLoginStatus(function(response) {
					statusChangeCallback(response);
				});
			} else {
				$('#login-facebook-area').css("display","list-item");
			}
			
		}
		
	};

	(function(d, s, id) {
		var js, fjs = d.getElementsByTagName(s)[0];
		if (d.getElementById(id)) {
			return;
		}
		js = d.createElement(s);
		js.id = id;
		js.src = "//connect.facebook.net/en_US/sdk.js";
		fjs.parentNode.insertBefore(js, fjs);
	}(document, 'script', 'facebook-jssdk'));

	like_callback = function(url, html_element) {
		var href = $(html_element).attr('data-href');
		var id = href.substring(href.lastIndexOf('/')+1);;
		var type = "";
		if(href.lastIndexOf('photo/') != -1){
			type = "photo";			
		}
		switch (type) {
		case 'photo':
			$.post( "/update-like", {
				id : id
			});
			break;
		default:
			break;
		}
		
	};

	add_comment_callback = function(response) {
		  var href = response.href;
			var id = href.substring(href.lastIndexOf('/')+1);;
			var type = "";
			if(href.lastIndexOf('photo/') != -1){
				type = "photo";			
			}
			if(href.lastIndexOf('truyen-cuoi/') != -1){
				type = "truyen-cuoi";			
			}
			if(href.lastIndexOf('video/') != -1){
				type = "video";			
			}
			console.log(id);
			switch (type) {
			case 'photo':
				$.post("/update-comment", {
					id : id
				});
				break;
			case 'truyen-cuoi':
				$.post("/update-comment", {
					id : id
				});
				break;
			case 'video':
				$.post("/video/update-comment", {
					id : id
				});
				break;
			default:
				break;
			}
	};
		
	function statusChangeCallback(response) {
		if (response.status === 'connected') {
			preLogin(true);
		} else {
			$('#login-facebook-area').css("display","list-item");
		}
	}
	;

	preLogin = function(authorized) {
		done = false;
		email = '';
		name = '';
		avatar = '';
		FB.api('/me',{fields: 'name,email'}, function(response) {
			email = response.email;
			name = response.name;
			if (done || authorized) {
				login(authorized);
			} else {
				done = true;
			}
		});
		if (!authorized) {
			FB.api('/me/picture', function(response) {
				avatar = response.data.url;
				console.log(avatar);
				if (done) {
					login(authorized);
				} else {
					done = true;
				}
			});
		}
	}
	;

	$('#btn-login-facebook').click(function() {
		FB.login(function(response) {
			if(response.status == 'connected'){
				console.log(response);
				preLogin(false);
			}
		}, {
			scope : 'email'
		});
	});
	
	function login(authorized) {
		if(email == null || typeof email == 'undefined'){
			alert('Bạn phải cho phép trollvl sử dụng email facebook của bạn để khởi tạo tài khoản');
			window.location.href = "/";
			return;
		}
			$.post("/uploader/login", {
				email : email,
				name : name,
				avatar: avatar
			}).done(function(data) {
				var returnUrl = getURLParameter('ReturnUrl');
				if(!authorized){
					if(returnUrl == null || returnUrl == ''){
						window.location.href = "/";
					} else {
						window.location.href = "/"+ returnUrl;
					}
				} else {
					// change view on header
					var uploader = data.data;
					if(uploader != null){
						$('#login-facebook-area').css("display","none");
						if($("#avatar-area").length == 0){
							var html = "<li id='avatar-area'><div class='avatar noNoti'> "
								+ "<a href='/uploader/'" + uploader.id + " class='avatarLink' title='" + uploader.name + "'>"
								+ "<img src='" + uploader.avatar +"' >" + uploader.name+ "</a>" 
								+ "<div class='blank'></div> "
								+ "<ul>	<li><a href='/uploader/" + uploader.id + "'>Ảnh của bạn</a></li>"
								+ "<li><a href='/uploader/info'>Thông tin cá nhân</a></li>"
								+ "<li><a href='/uploader/change-password'>Đổi mật khẩu</a></li>"
								+ "<li><a onclick='logout();'>Thoát</a></li></ul></div></li>";
							$('#header-uploader').append(html);
						}
						$("#avatar-area").css("display","list-item");
						hover_avatar_link();
					}	
					if(returnUrl != null && returnUrl != ''){
						window.location.href = "/"+ returnUrl;
					}
				}
			}).fail(function() {
				alert("Đăng nhập thất bại, vui lòng kiểm tra và thử lại lần nữa");
			});
		
	}
	hover_avatar_link = function(){
		$('#avatar-area').hover(function() {
			var ul = $('#avatar-area div ul')[0];
			$(ul).css("display", "block");
		},function() {
			var ul = $('#avatar-area div ul')[0];
			$(ul).css("display", "none");
		});
	};
	
	logout = function(){
		$.post("/uploader/logout").done(function(data) {
			// change view on header
			$("#avatar-area").css("display","none");
			$('#login-facebook-area').css("display","list-item");
			$.cookie("autoLogin", false);
			window.location.href = "/";
		}).fail(function() {
			alert("Đã có lỗi xảy ra, vui lòng kiểm tra và thử lại lần nữa");
		});
	};

	$('#btn-login-account').click(function(){
		var email = $('#email-txt').val();
		var password = $('#password-txt').val();
		$('#login-failure').css('display','none');
		$.post("/uploader/login-account", {
			email : email,
			password : password
		}).done(function( data ) {
			if(data.success){
				if(data.data != null){
					var returnUrl = getURLParameter('ReturnUrl');
					if(returnUrl == null || returnUrl == ''){
						window.location.href = "/";
					} else {
						window.location.href = "/"+ returnUrl;
					}
				} else {
					$('#login-failure').text('Email hoặc Mật Khẩu không đúng. Vui lòng kiểm tra lại.');
					$('#login-failure').css('display','block');
				}
			} else {
				$('#login-failure').text('Đăng nhập thất bại.');
				$('#login-failure').css('display','block');
			}
		  }).fail(function() {
			    alert("Có lỗi xảy ra, vui lòng kiểm tra và thử lại lần nữa");
		  });
	});
	var getURLParameter = function(name) {
		return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(location.search)||[,""])[1].replace(/\+/g, '%20'))||null;
	};
	
});
